{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Discretization with K-means"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.datasets import fetch_california_housing\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import KBinsDiscretizer\n",
    "from yellowbrick.cluster import KElbowVisualizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MedInc</th>\n",
       "      <th>HouseAge</th>\n",
       "      <th>AveRooms</th>\n",
       "      <th>AveBedrms</th>\n",
       "      <th>Population</th>\n",
       "      <th>AveOccup</th>\n",
       "      <th>Latitude</th>\n",
       "      <th>Longitude</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.3252</td>\n",
       "      <td>41.0</td>\n",
       "      <td>6.984127</td>\n",
       "      <td>1.023810</td>\n",
       "      <td>322.0</td>\n",
       "      <td>2.555556</td>\n",
       "      <td>37.88</td>\n",
       "      <td>-122.23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8.3014</td>\n",
       "      <td>21.0</td>\n",
       "      <td>6.238137</td>\n",
       "      <td>0.971880</td>\n",
       "      <td>2401.0</td>\n",
       "      <td>2.109842</td>\n",
       "      <td>37.86</td>\n",
       "      <td>-122.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.2574</td>\n",
       "      <td>52.0</td>\n",
       "      <td>8.288136</td>\n",
       "      <td>1.073446</td>\n",
       "      <td>496.0</td>\n",
       "      <td>2.802260</td>\n",
       "      <td>37.85</td>\n",
       "      <td>-122.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5.6431</td>\n",
       "      <td>52.0</td>\n",
       "      <td>5.817352</td>\n",
       "      <td>1.073059</td>\n",
       "      <td>558.0</td>\n",
       "      <td>2.547945</td>\n",
       "      <td>37.85</td>\n",
       "      <td>-122.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.8462</td>\n",
       "      <td>52.0</td>\n",
       "      <td>6.281853</td>\n",
       "      <td>1.081081</td>\n",
       "      <td>565.0</td>\n",
       "      <td>2.181467</td>\n",
       "      <td>37.85</td>\n",
       "      <td>-122.25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   MedInc  HouseAge  AveRooms  AveBedrms  Population  AveOccup  Latitude  \\\n",
       "0  8.3252      41.0  6.984127   1.023810       322.0  2.555556     37.88   \n",
       "1  8.3014      21.0  6.238137   0.971880      2401.0  2.109842     37.86   \n",
       "2  7.2574      52.0  8.288136   1.073446       496.0  2.802260     37.85   \n",
       "3  5.6431      52.0  5.817352   1.073059       558.0  2.547945     37.85   \n",
       "4  3.8462      52.0  6.281853   1.081081       565.0  2.181467     37.85   \n",
       "\n",
       "   Longitude  \n",
       "0    -122.23  \n",
       "1    -122.22  \n",
       "2    -122.24  \n",
       "3    -122.25  \n",
       "4    -122.25  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# load the California House price data from Scikit-learn\n",
    "X, y = fetch_california_housing(return_X_y=True, as_frame=True)\n",
    "\n",
    "# display top 5 rows\n",
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((14448, 8), (6192, 8))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# let's separate the data into training and testing sets\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X,\n",
    "    y,\n",
    "    test_size=0.3,\n",
    "    random_state=0,\n",
    ")\n",
    "\n",
    "X_train.shape, X_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Finding the optimal number of clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The variables to transform:\n",
    "\n",
    "variables = [\"MedInc\", \"HouseAge\", \"AveRooms\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import matplotlib.pyplot as plt\n",
    "# plt.rcParams[\"figure.dpi\"] = 450"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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W2+9RUpKClWqVOGdd94hISGBJ598kj179pCYmMjf//53KleuzKRJkzh27Bg1a9bkhRdeoFatWowdO5YaNWqwadMmevbsyaBBg3j66adJSEggJCSEv//97zRr1qxgL5QrLS2NxMREwsLCSExMpG7dugB06tSJvXv3ntO+Xr161KtXD4AqVarQrFkzEhISOHHiBE2aNKFx48YADBgwgEWLFtGiRQufcqxduzbH+f/0pz/luL4WLVpQt25dmjZtmuNzRWHFpIAm9o0hLi6V2pUj+ejWXlz60ufc+u63NK9TlY6Na/s7ngkyKSkpTJw4kV27dpGens6999571vOrV69m5MiRnDx5krvvvpuePXuSkpLCww8/zN69e0lLS+OWW25hxowZTJ8+nWrVqtGlSxfeeust2rRpwzXXXMN7772X+cF98uRJHn30UU6cOMEvv/zC8OHDGT58OFOnTmXr1q288sor3HXXXWdlUFVq167NqFGjuO666xgyZEjmc8OHD+fUqVPnbNdDDz3EJZdckvl479691KpVi4cffphNmzbRpk0bHn300VxPGj116hTTp0/no48+IiIiguPHj5Oamsptt93GuHHj6NWrF2fOnCE1NZVhw4YxZcoUWrVqxbRp05g1axbjxo1j8+bN9OvXj//+97+kpKQwevRonnjiCc4//3yWLl3K9OnTeeaZZ85ary/bU79+fW699VZ69epFZGQkl156Kd26dcvjt3y2vXv3snHjRmJiYvjmm2+IiorKfK5+/fqsXfvb0aOjRo3C4/Fwww03cMMNN5yzrISEhDznz76+vLIUlRWTImgTVYP/u+kyhsxczDUzF/P9vf1pWL3wZ1SXdz/++CObNm0qlZMWc+JLT2Lq1KmZP586dYrKlSuf02bkyJGMHDnSp3XOmTOHmjVr8vTTT3PkyBFuuukmRo0alfl8xYoVmTZtGr/++ivXX3893bt357333qNWrVpMmTKFkydPcu211zJ48GCWLVtGVFQUjRo14ttvvyUyMpKmTZue1QPYtWsXAwYMoE+fPiQkJHDzzTczfPhwxowZw+bNm88pJCkpKezZs4fx48czefJkOnTocNbzs2fP9mk7U1NT2bBhA4899hgxMTE8+eSTTJs27ZzimSEkJITExESeffZZfve739G2bVs+//xzmjdvTq9evTJfm//973/ExsbSqlUrAFq0aMFXX31FUlISx44d48477wTgyy+/ZOvWrdx9992A07PI6e/Ml+05duwYixYtYtGiRVStWpV77rmHzz77jN///vf5znvq1CnGjh3LI488QpUqVfJs+84771C/fn0OHz7MLbfcQrNmzejUqVO+6/B1fQXJ4gsrJkU0oHUjnh1wMQ9++hPXvr6ExXf2oWK4vayFMXr0aJKTk7n55pv9HaXUbN68mbi4uMxvk6mpqRw5ciTz+djYWDweD7Vr16Zq1aocPXqUbdu2ZX5LrlKlCs2bN6dz5868++67NGjQgHHjxvHWW2/h9Xrp06fPWeurU6cOs2bNYuHChVSpUoXU1NQ8823bto22bdty7NgxQkNDz3ne155JVFQUUVFRmd+Ar7766rN2NmdXsWJFPv30UxYvXsyECRO47rrr+OWXX875Br1161ZatmyZ+Xjz5s20aNGCLVu2EBMTk3mVg02bNnHvvffmOIxX0O359ttvadSoEbVq1QKgT58+rFy5Mt9ikpKSwtixYxk0aFDm76V+/focOHAgs01CQgL169fPfA6gdu3a9O7dm7Vr155TTPKaP6f15ZWlqOxTrxiM79ma9QnHmPXjNka/t4K3/3BZoc4gNeVPs2bNiIqKYsyYMSQmJvLqq69SvXr1zIKybt06wNmncfr0aWrWrEnz5s1ZuXIlvXv35uTJk2zevJnmzZuzZ88eDh48yH333cd//vMfFi1axOuvv37W+mbOnEn79u0ZPnw43333HUuXLgWcnkBOl8/YtGkTHTp0YPDgwdx1113MmjWLOnXqZD7va8+kbt26REVFsX37dpo1a8aKFSvyvODg7t27adWqFQMGDGDr1q0kJydTt25dNm3alNnm119/pX79+mzcuBGAPXv2MG/ePGbPns3ixYsRkcy29erV45tvvmHo0KGEhISgqrRs2fKc96kv29OwYUPWrFnDmTNnqFChAitWrDiroOXE6/Xy6KOP0qxZM2655ZbM6W3btmXnzp3s2bOH+vXr89lnn/H8889z+vRp0tPTqVKlCqdPn2b58uX8+c9/Pme5uc2f2/ryylJUdmhwMfB4PLx6XRcuaVqXd1ft5JlF8f6OZILEsGHD2L59OzfddBPDhg3jvPPOIyTkt7dlYmIiI0aM4I477mDy5Ml4PB5+//vfc/ToUW688UZGjBjBXXfdRe3atencuTO1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# set up a k-means clustering algorithm\n",
    "k_means = KMeans(random_state=10)\n",
    "\n",
    "# we test every variable\n",
    "for variable in variables:\n",
    "\n",
    "    # set up a visualiser\n",
    "    visualizer = KElbowVisualizer(\n",
    "        k_means, k=(4, 12), metric=\"distortion\", timings=False\n",
    "    )\n",
    "\n",
    "    # Fit the data to the visualizer\n",
    "    visualizer.fit(X_train[variable].to_frame())\n",
    "\n",
    "    # Finalize and render the figure\n",
    "    visualizer.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## K-means discretization with Scikit-Learn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KBinsDiscretizer(encode=&#x27;onehot-dense&#x27;, n_bins=6, strategy=&#x27;kmeans&#x27;,\n",
       "                 subsample=None)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KBinsDiscretizer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.KBinsDiscretizer.html\">?<span>Documentation for KBinsDiscretizer</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KBinsDiscretizer(encode=&#x27;onehot-dense&#x27;, n_bins=6, strategy=&#x27;kmeans&#x27;,\n",
       "                 subsample=None)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "KBinsDiscretizer(encode='onehot-dense', n_bins=6, strategy='kmeans',\n",
       "                 subsample=None)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# number of clusters\n",
    "\n",
    "k = 6\n",
    "\n",
    "# set up a k-means discretizer\n",
    "\n",
    "disc = KBinsDiscretizer(\n",
    "    n_bins=k, \n",
    "    encode=\"onehot-dense\",\n",
    "    strategy=\"kmeans\",\n",
    "    subsample=None,\n",
    ").set_output(transform=\"pandas\")\n",
    "\n",
    "# fit the discretizer to the train set so that it learns\n",
    "# the clusters\n",
    "\n",
    "disc.fit(X_train[variables])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([array([ 0.4999    ,  2.49587954,  3.66599029,  4.95730115,  6.67700141,\n",
       "               9.67326677, 15.0001    ])                                      ,\n",
       "       array([ 1.        , 11.7038878 , 19.88430419, 27.81472503, 35.39424098,\n",
       "              43.90930314, 52.        ])                                      ,\n",
       "       array([  0.84615385,   4.90208858,   6.72106111,  15.36396902,\n",
       "               37.66406307,  92.4473438 , 132.53333333])             ],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we can inspect the bin boundaries here:\n",
    "\n",
    "disc.bin_edges_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MedInc_0.0</th>\n",
       "      <th>MedInc_1.0</th>\n",
       "      <th>MedInc_2.0</th>\n",
       "      <th>MedInc_3.0</th>\n",
       "      <th>MedInc_4.0</th>\n",
       "      <th>MedInc_5.0</th>\n",
       "      <th>HouseAge_0.0</th>\n",
       "      <th>HouseAge_1.0</th>\n",
       "      <th>HouseAge_2.0</th>\n",
       "      <th>HouseAge_3.0</th>\n",
       "      <th>HouseAge_4.0</th>\n",
       "      <th>HouseAge_5.0</th>\n",
       "      <th>AveRooms_0.0</th>\n",
       "      <th>AveRooms_1.0</th>\n",
       "      <th>AveRooms_2.0</th>\n",
       "      <th>AveRooms_3.0</th>\n",
       "      <th>AveRooms_4.0</th>\n",
       "      <th>AveRooms_5.0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1989</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>256</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7887</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4581</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1993</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      MedInc_0.0  MedInc_1.0  MedInc_2.0  MedInc_3.0  MedInc_4.0  MedInc_5.0  \\\n",
       "1989         1.0         0.0         0.0         0.0         0.0         0.0   \n",
       "256          1.0         0.0         0.0         0.0         0.0         0.0   \n",
       "7887         0.0         0.0         0.0         1.0         0.0         0.0   \n",
       "4581         1.0         0.0         0.0         0.0         0.0         0.0   \n",
       "1993         1.0         0.0         0.0         0.0         0.0         0.0   \n",
       "\n",
       "      HouseAge_0.0  HouseAge_1.0  HouseAge_2.0  HouseAge_3.0  HouseAge_4.0  \\\n",
       "1989           0.0           0.0           0.0           0.0           0.0   \n",
       "256            0.0           0.0           0.0           0.0           1.0   \n",
       "7887           0.0           1.0           0.0           0.0           0.0   \n",
       "4581           0.0           1.0           0.0           0.0           0.0   \n",
       "1993           0.0           0.0           0.0           0.0           0.0   \n",
       "\n",
       "      HouseAge_5.0  AveRooms_0.0  AveRooms_1.0  AveRooms_2.0  AveRooms_3.0  \\\n",
       "1989           1.0           1.0           0.0           0.0           0.0   \n",
       "256            0.0           1.0           0.0           0.0           0.0   \n",
       "7887           0.0           0.0           1.0           0.0           0.0   \n",
       "4581           0.0           1.0           0.0           0.0           0.0   \n",
       "1993           1.0           1.0           0.0           0.0           0.0   \n",
       "\n",
       "      AveRooms_4.0  AveRooms_5.0  \n",
       "1989           0.0           0.0  \n",
       "256            0.0           0.0  \n",
       "7887           0.0           0.0  \n",
       "4581           0.0           0.0  \n",
       "1993           0.0           0.0  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# obtain new features: for train set\n",
    "\n",
    "train_features = disc.transform(X_train[variables])\n",
    "\n",
    "train_features.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       MedInc_0.0  MedInc_1.0  MedInc_2.0  MedInc_3.0  MedInc_4.0  MedInc_5.0  \\\n",
      "14740         0.0         0.0         1.0         0.0         0.0         0.0   \n",
      "10101         0.0         0.0         0.0         1.0         0.0         0.0   \n",
      "20566         0.0         0.0         1.0         0.0         0.0         0.0   \n",
      "2670          1.0         0.0         0.0         0.0         0.0         0.0   \n",
      "15709         0.0         0.0         0.0         1.0         0.0         0.0   \n",
      "\n",
      "       HouseAge_0.0  HouseAge_1.0  HouseAge_2.0  HouseAge_3.0  HouseAge_4.0  \\\n",
      "14740           0.0           0.0           1.0           0.0           0.0   \n",
      "10101           0.0           0.0           0.0           1.0           0.0   \n",
      "20566           0.0           0.0           0.0           1.0           0.0   \n",
      "2670            0.0           0.0           0.0           0.0           1.0   \n",
      "15709           0.0           0.0           1.0           0.0           0.0   \n",
      "\n",
      "       HouseAge_5.0  AveRooms_0.0  AveRooms_1.0  AveRooms_2.0  AveRooms_3.0  \\\n",
      "14740           0.0           0.0           1.0           0.0           0.0   \n",
      "10101           0.0           0.0           1.0           0.0           0.0   \n",
      "20566           0.0           0.0           1.0           0.0           0.0   \n",
      "2670            0.0           0.0           1.0           0.0           0.0   \n",
      "15709           0.0           1.0           0.0           0.0           0.0   \n",
      "\n",
      "       AveRooms_4.0  AveRooms_5.0  \n",
      "14740           0.0           0.0  \n",
      "10101           0.0           0.0  \n",
      "20566           0.0           0.0  \n",
      "2670            0.0           0.0  \n",
      "15709           0.0           0.0  \n"
     ]
    }
   ],
   "source": [
    "# obtain new features: for test set\n",
    "\n",
    "test_features = disc.transform(X_test[variables])\n",
    "\n",
    "print(test_features.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6192, 18)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We have 18 one-hot encoded new features\n",
    "\n",
    "test_features.shape"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "fsml",
   "language": "python",
   "name": "fsml"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "921.556px",
    "left": "0px",
    "right": "1852px",
    "top": "110.444px",
    "width": "281.333px"
   },
   "toc_section_display": "block",
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
